998f3ca63f5a36540b65486249dc63f37deef2cc,plugins/org.eclipse.xtext.ui.core/src/org/eclipse/xtext/ui/core/editor/findrefs/FindReferencesHandler.java,EObjectResolver,exec,#XtextResource#,54
Before Change
public java.lang.Void exec(XtextResource state) throws Exception {
IParseResult parseResult = state.getParseResult();
if (parseResult != null) {
CompositeNode rootNode = parseResult.getRootNode();
if (rootNode != null) {
AbstractNode node = ParseTreeUtil.getCurrentOrFollowingNodeByOffset(rootNode, selection
.getOffset());
After Change
public IEObjectDescription exec(XtextResource state) throws Exception {
IParseResult parseResult = state.getParseResult();
if (parseResult != null && parseResult.getRootNode() != null) {
AbstractNode node = ParseTreeUtil.getCurrentOrFollowingNodeByOffset(parseResult.getRootNode(),
selection.getOffset());
while (node != null) {
if (node.getGrammarElement() instanceof CrossReference) {
EObject referenceOwner = NodeUtil.getNearestSemanticObject(node);
EReference eReference = GrammarUtil.getReference((CrossReference) node.getGrammarElement(),
referenceOwner.eClass());
try {
List<EObject> linkedEObjects = linkingService.getLinkedObjects(referenceOwner, eReference,
node);
if (!linkedEObjects.isEmpty()) {
IScope scope = scopeProvider.getScope(referenceOwner, eReference);
return scope.getContentByEObject(linkedEObjects.get(0));
} else {
return null;
}
} catch (IllegalNodeException ex) {
return null;